FokkerPlanck1D Derived Type

type, public :: FokkerPlanck1D

solver of FP eq


Components

Type Visibility Attributes Name Initial
real(kind=dp), public :: enorm = 0

электрическое поле

real(kind=dp), public :: v_lim = 0

верхняя граница скорости электронов

real(kind=dp), public, allocatable :: v(:)

сетка скоростей

real(kind=dp), public, allocatable :: f(:)

распределение

integer, public :: i0 = 0

size of distribution grid

real(kind=dp), public :: alfa2 = 0

поле со знаком

integer, public :: n = 0

size of local grid

real(kind=dp), public :: h = 0

step of local grid

real(kind=dp), public, allocatable :: d1(:)

диффузия

real(kind=dp), public, allocatable :: d2(:)

диффузия

real(kind=dp), public, allocatable :: d3(:)

диффузия


Constructor

public interface FokkerPlanck1D

  • public function FokkerPlanck1D_constructor(e, v_lim, v, f) result(this)

    конструктор для FokkerPlanck1D

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), value :: e
    real(kind=dp), value :: v_lim
    real(kind=dp), value :: v(:)
    real(kind=dp), value :: f(:)

    Return Value type(FokkerPlanck1D)


Type-Bound Procedures

procedure, public :: print => FokkerPlanck1D_print

procedure, public :: solve_time_step => FokkerPlanck1D_solve_time_step

  • public subroutine FokkerPlanck1D_solve_time_step(this, dt, nt)

    !!!!!!!!!! solve problem !!!!!!!!!!!!!!!!!!!!!!!!!!

    Arguments

    Type IntentOptional Attributes Name
    class(FokkerPlanck1D), intent(inout) :: this
    real(kind=dp), intent(in) :: dt
    integer, intent(in) :: nt

procedure, public :: init_zero_diffusion => FokkerPlanck1D_init_zero_diffusion

procedure, public :: init_diffusion => FokkerPlanck1D_init_diffusion

  • public subroutine FokkerPlanck1D_init_diffusion(this, dif)

    инициализация диффузии для схемы савельева

    Arguments

    Type IntentOptional Attributes Name
    class(FokkerPlanck1D), intent(inout) :: this
    real(kind=dp), intent(in), dimension(:) :: dif